﻿using KingerRobot.PCRBW.Dao;
using KingerRobot.PCRMES.Spi;

namespace KingerRobot.PCRBW.Biz;
/// <summary>
/// 人工一键清理任务 MES、上位机、下位机
/// </summary>
public class ClearTaskBiz : K8.MDCBB.Biz
{
    #region 配置参数
    private ParamData Param { get; set; }

    class ParamData
    {
      
    }
    #endregion

    #region PLC 通讯参数
    private ValueData Data { get; set; }
    class ValueData
    {
        #region 点位
       
      
        /// <summary>
        ///运行任务
        /// </summary>
        public int Status { get; set; }
        /// <summary>
        /// 交互标志位
        /// </summary>
        public int WCSGantryCommandFlag { get; set; }

        /// <summary>
        /// 指令流水号
        /// </summary>
        public int ReSerialNumber { get; set; }

        /// <summary>
        /// 十字架1完成信号
        /// </summary>
        public int CrossEnd1 { get; set; }

        /// <summary>
        /// 十字架1空取信号
        /// </summary>
        public int EmptySignal1  { get; set; }

        /// <summary>
        /// 十字架2完成信号
        /// </summary>
        public int CrossEnd2 { get; set; }

        /// <summary>
        /// 十字架2空取信号
        /// </summary>
        public int EmptySignal2 { get; set; }
        #endregion
    }
    #endregion

    #region 缓存
    private CacheData Cache { get; set; }
    class CacheData
    {
        public long FinalTaskNo { get; set; }
    }
    #endregion

    #region 实时日志
    private StepData Step { get; set; }
    class StepData
    {
        private string _msg = string.Empty;
        public string StepMsg
        {
            get
            {
                return this._msg;
            }
            set
            {
                if (string.IsNullOrWhiteSpace(value))
                {
                    this._msg = string.Empty;
                    return;
                }
                this._msg = $"{System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}>>{value}";
            }
        }
    }
    private void StepMsg(string msg)
    {
        this.Step.StepMsg = msg;
        this.WriteLog(msg);
    }
    #endregion

    #region 文件日志（运行需要 Nlog 配置）
    private void WriteLog(string message)
    {
        K8.LSF.Client.Log(new K8.LSF.Log { Data = message });
    }
    #endregion

    /// <summary>
    /// 和 PLC 通讯对象
    /// </summary>
    private BizData BizData { get; set; }
    public int Execute(BizData writer)
    {
        // Excute 方法外使用 BizParam
        this.BizData = writer;
        // 返回参数
        var result = 0;
        return result;
        //string errorMsg = string.Empty;
        //var taskService = K8.RSF.Client.Create<ITaskService>();


        //var task = taskService.QueryClearTask();
        //if (task != null)
        //{
        //    if (task.Task.TaskStatus == 2)
        //    {
        //        //清理上位机、下位机、MES任务
        //        var data = this.BizData.WriteData(new
        //        {
        //            r32ClearWCSFlag = 1//命令
        //        });
        //        if (data > 0)
        //        {
        //            //指令下发成功
        //            this.StepMsg($"下发清理指令成功:{data}");
        //            taskService.DelTaskAndCmd(task);
        //        }
        //    }
        //    else
        //    {
        //        //只清理订单和任务
        //    }
        //}

        //return result;
    }
}
